package product

import (
	"fmt"
	"github.com/gofiber/fiber/v2"
	"go_cms/app/dto"
	"go_cms/app/param"
	"go_cms/app/service"
	"go_cms/utils"
)

type GoodsController struct {
}

// 获取商品列表
func (this *GoodsController) GoodsList(ctx *fiber.Ctx) error {
	//token,err:=utils.GetToken(ctx)
	//if err!=nil{
	//	return utils.Failed(ctx,"token 验证失败")
	//}
	//if utils.Debug{
	//	fmt.Printf("advanceQuery.go 20,token=%#v\n",token)
	//}

	// 1 解析用户传递的参数
	var queryInfo param.QueryInfo
	err := ctx.BodyParser(&queryInfo)
	if err!=nil {
		utils.Lzlog.Error("parse Param err")
		return utils.Failed(ctx,"参数解析失败goods.go 30")
	}
	if (utils.Debug) {
		fmt.Println("goods.go 33:",queryInfo)
		//utils.Lzlog.Info("account.go 26:",loginParam)
	}
	// 3.登陆 service 层实现
	gs:=service.GoodsService{}
	goodslist,totalCount := gs.GoodsList(queryInfo)

	if goodslist !=nil{
		var res dto.GoodsInfo
		res.List= goodslist
		res.TotalCount=totalCount
		return utils.Success(ctx,res)
	}

	return utils.Failed(ctx,"获取角色菜单error")
}

// 获取分类数量
func (this *GoodsController) CategoryCount(ctx *fiber.Ctx) error {
	// 3.登陆 service 层实现
	gs:=service.GoodsService{}
	categoryInfo := gs.CategoryCount()
	if categoryInfo !=nil{
		var res dto.CategoryInfo
		res.List= categoryInfo

		return utils.Success(ctx,res)
	}
	return utils.Failed(ctx,"获取分类数量error")
}

// 获取分类销量
func (this *GoodsController) CategorySale(ctx *fiber.Ctx) error {
	// 3.登陆 service 层实现
	gs:=service.GoodsService{}
	categoryInfo := gs.CategorySale()
	if categoryInfo !=nil{
		var res dto.CategoryInfo
		res.List= categoryInfo
		return utils.Success(ctx,res)
	}
	return utils.Failed(ctx,"获取分类销量error")
}

// 获取分类收藏
func (this *GoodsController) CategoryFavor(ctx *fiber.Ctx) error {
	// 3.登陆 service 层实现
	gs:=service.GoodsService{}
	categoryInfo := gs.CategoryFavor()
	if categoryInfo !=nil{
		var res dto.CategoryInfo
		res.List= categoryInfo
		return utils.Success(ctx,res)
	}
	return utils.Failed(ctx,"获取分类收藏error")
}

// 获取地区销量
func (this *GoodsController) AddressSale(ctx *fiber.Ctx) error {
	// 3.登陆 service 层实现
	gs:=service.GoodsService{}
	categoryInfo := gs.AddressSale()
	if categoryInfo !=nil{
		var res dto.AddressInfo
		res.List= categoryInfo
		return utils.Success(ctx,res)
	}
	return utils.Failed(ctx,"获取地区销量error")
}

// 获取各分类数量统计列表
func (this *GoodsController) AmountList(ctx *fiber.Ctx) error {
	// 3.登陆 service 层实现
	gs:=service.GoodsService{}
	amountList := gs.AmountList()
	if amountList !=nil{
		return utils.Success(ctx,amountList)
	}
	return utils.Failed(ctx,"获取各分类数量统计列表error")
}

// 获取商品分类列表
func (this *GoodsController) CategoryList(ctx *fiber.Ctx) error {
	// 1 解析用户传递的参数
	var queryInfo param.QueryInfo
	err := ctx.BodyParser(&queryInfo)
	if err!=nil {
		utils.Lzlog.Error("parse Param err")
		return utils.Failed(ctx,"参数解析失败goods.go 30")
	}
	if (utils.Debug) {
		fmt.Println("goods.go 33:",queryInfo)
		//utils.Lzlog.Info("account.go 26:",loginParam)
	}
	// 3.登陆 service 层实现
	gs:=service.GoodsService{}
	categorylist,totalCount := gs.CategoryList(queryInfo)

	if categorylist !=nil{
		var res dto.CategoriesInfo
		res.List= categorylist
		res.TotalCount=totalCount
		return utils.Success(ctx,res)
	}

	return utils.Failed(ctx,"获取角色菜单error")
}